package a.a;

import a.c.ab;
import a.c.bb;
import a.c.d;
import a.c.e;
import a.c.n;
import a.c.q;
import a.c.w;
import a.c.*;
import a.i.db;

import java.util.ArrayList;
import java.util.Random;

class a
{
  private static final long a = 1234L;
  private int c;
  private x d;
  private int e;
  private boolean f;
  
  a()
  {
    a(0);
    b(10);
    a(false);
  }
  
  private void a(q paramq, bb parambb, n paramn)
  {
    int i = m.b;
    boolean bool = m.a;
    Random localRandom = new Random(1234L);
    x localx = db.a(new boolean[paramq.j()]);
    w localw = parambb.l();
    do
    {
      do
      {
        if (!localw.e()) {
          break;
        }
        localx.a(localw.d(), true);
        if (i != 0) {
          break label99;
        }
        localw.f();
        if (bool) {
          break label97;
        }
      } while (!bool);
    } while (i != 0);
    localw = parambb.l();
    label97:
    label99:
    label121:
    do
    {
      do
      {
        do
        {
          if (!localw.e()) {
            return;
          }
          break;
          break label121;
          locald = localw.d().i();
          do
          {
            if (locald == null) {
              break label169;
            }
            if (bool) {
              break;
            }
            if (localx.getBool(locald.e())) {
              paramn.a(locald, localRandom.nextDouble());
            }
            locald = locald.j();
          } while (!bool);
        } while (i != 0);
        d locald = localw.d().h();
        do
        {
          if (locald == null) {
            break label236;
          }
          if (bool) {
            break;
          }
          if (localx.getBool(locald.f())) {
            paramn.a(locald, localRandom.nextDouble());
          }
          locald = locald.i();
        } while (!bool);
        localw.f();
      } while (i != 0);
    } while (!bool);
    label169:
    label236:
    return;
  }
  
  private void b(q paramq, bb parambb, n paramn)
  {
    int i = m.b;
    boolean bool = m.a;
    a_[] arrayOfa_ = new a_[paramq.j()];
    a(parambb, paramn, 0.0D);
    w localw = a(parambb).l();
    label186:
    label363:
    label380:
    do
    {
      if (!localw.e()) {
        break;
      }
      do
      {
        e locale1 = localw.d();
        if (a(locale1))
        {
          bb localbb = new bb();
          Object localObject1 = parambb.l();
          do
          {
            if (!((w)localObject1).e()) {
              break;
            }
            localObject2 = ((w)localObject1).d();
            arrayOfa_[localObject2.f()] = new a_((e)localObject2);
            ((w)localObject1).f();
            if (i != 0) {
              break label663;
            }
            if (bool) {
              break label661;
            }
          } while (!bool);
          localObject1 = new bb();
          ((bb)localObject1).add(locale1);
          Object localObject2 = arrayOfa_[locale1.f()];
          ((a_)localObject2).d = 1.0D;
          if (i != 0) {
            break label663;
          }
          ((a_)localObject2).f = 0;
          do
          {
            e locale2;
            a_ locala_1;
            a.c.m localm;
            do
            {
              while (i != 0) {
                for (;;)
                {
                  if (!((bb)localObject1).isEmpty())
                  {
                    locale2 = ((bb)localObject1).o();
                    localbb.a(locale2);
                    locala_1 = arrayOfa_[locale2.f()];
                    localm = locale2.l();
                    if (!localm.e()) {
                      break label186;
                    }
                    locald = localm.a();
                    localObject3 = locald.a(locale2);
                    if ((i != 0) || ((i == 0) && (bool))) {
                      break label427;
                    }
                    if (!bool)
                    {
                      if (a((e)localObject3))
                      {
                        a_ locala_2 = arrayOfa_[localObject3.f()];
                        if (i == 0) {
                          if (locala_2.f < 0)
                          {
                            locala_2.f = (locala_1.f + 1);
                            if (i == 0) {
                              if (a() == 2)
                              {
                                if (i != 0) {
                                  break label380;
                                }
                                if (locala_2.f > b()) {
                                  break label363;
                                }
                              }
                            }
                            ((bb)localObject1).add(locala_2.a());
                          }
                        }
                        if (i != 0) {
                          break label414;
                        }
                        if (locala_2.f == locala_1.f + 1)
                        {
                          a_.access$018(locala_2, locala_1.d);
                          locala_2.g.add(locald);
                        }
                      }
                      localm.f();
                      if (!bool) {
                        break;
                      }
                      break label457;
                    }
                  }
                }
              }
              if (localbb.isEmpty()) {
                break label649;
              }
              locale2 = localbb.o();
              locala_1 = arrayOfa_[locale2.f()];
              localm = locala_1.g.l();
            } while (!localm.e());
            d locald = localm.a();
            Object localObject3 = arrayOfa_[locald.a(locale2).f()];
            if (i != 0) {
              break label663;
            }
            do
            {
              if (bool) {
                break;
              }
            } while (i != 0);
            if (bool) {
              break;
            }
            double d1;
            if (c())
            {
              d1 = locala_1.b + 1.0D;
              a_.access$318((a_)localObject3, d1);
              paramn.a(locald, paramn.getDouble(locald) + d1 * ((a_)localObject3).d);
              if (i != 0) {
                continue;
              }
              if (!bool) {}
            }
            else
            {
              d1 = (i != 0) || (locala_1.d > 0.0D) ? (locala_1.b + 1.0D) * ((a_)localObject3).d / locala_1.d : 0.0D;
              a_.access$318((a_)localObject3, d1);
              paramn.a(locald, paramn.getDouble(locald) + d1);
            }
            localm.f();
          } while (!bool);
        }
      } while (i != 0);
      localw.f();
    } while (!bool);
    label414:
    label427:
    label457:
    return;
  }
  
  protected boolean a(e parame)
  {
    int i = m.b;
    if ((i != 0) || (this.d != null)) {
      if (i != 0) {
        break label33;
      }
    }
    label33:
    return this.d.getInt(parame) > 0;
  }
  
  protected bb a(bb parambb)
  {
    int m = m.b;
    boolean bool = m.a;
    if (a() == 1)
    {
      Random localRandom = new Random(1234L);
      bb localbb = new bb();
      ArrayList localArrayList = new ArrayList(parambb);
      int i = Math.min(parambb.size(), (int)Math.round(Math.log(parambb.size()) / Math.log(2.0D) * 10.0D));
      int j = 0;
      label182:
      do
      {
        if (j >= i) {
          break;
        }
        int k = localRandom.nextInt(localArrayList.size());
        if (m == 0)
        {
          if (bool) {
            break label191;
          }
          localbb.add(localArrayList.get(k));
        }
        if (m == 0)
        {
          if (k == localArrayList.size() - 1) {
            localArrayList.remove(localArrayList.size() - 1);
          }
        }
        else
        {
          if (m != 0) {
            continue;
          }
          if (!bool) {
            break label182;
          }
        }
        localArrayList.set(k, localArrayList.remove(localArrayList.size() - 1));
        j++;
      } while (!bool);
      label191:
      return localbb;
    }
    return parambb;
  }
  
  void a(q paramq, n paramn)
  {
    c(paramq, new bb(paramq.v()), paramn);
  }
  
  void c(q paramq, bb parambb, n paramn)
  {
    int i = m.b;
    if ((i != 0) || (paramq.m() != 0))
    {
      if (i != 0) {
        break label39;
      }
      if (!parambb.isEmpty()) {}
    }
    else
    {
      return;
    }
    if (i == 0) {
      label39:
      if (a() == 3)
      {
        if (i != 0) {
          break label65;
        }
        a(paramq, parambb, paramn);
        if (!m.a) {
          return;
        }
      }
    }
    label65:
    b(paramq, parambb, paramn);
  }
  
  void a(q paramq, bb parambb, x paramx, n paramn)
  {
    if ((m.b != 0) || ((paramq.l() == 0) || (parambb.isEmpty()))) {
      return;
    }
    this.d = paramx;
    c(paramq, parambb, paramn);
    this.d = null;
  }
  
  void a(int paramInt)
  {
    int i = m.b;
    boolean bool = m.a;
    this.e = paramInt;
    if (i == 0) {}
    switch (paramInt)
    {
    case 0: 
    default: 
    case 1: 
      if ((i == 0) && ((!bool) || (bool))) {
        break;
      }
    }
  }
  
  int a()
  {
    return this.e;
  }
  
  int b()
  {
    return this.c;
  }
  
  void b(int paramInt)
  {
    if (m.b == 0)
    {
      if (paramInt > 1) {
        this.c = paramInt;
      }
    }
    else if (!m.a) {
      return;
    }
    throw new IllegalArgumentException("Maximum path length must be greater than 1.");
  }
  
  boolean c()
  {
    return this.f;
  }
  
  void a(boolean paramBoolean)
  {
    this.f = paramBoolean;
  }
  
  protected void a(bb parambb, n paramn, double paramDouble)
  {
    int i = m.b;
    boolean bool = m.a;
    w localw = parambb.l();
    label99:
    do
    {
      if (!localw.e()) {
        break;
      }
      do
      {
        e locale = localw.d();
        if (a(locale))
        {
          d locald = locale.h();
          do
          {
            if (locald == null) {
              break label99;
            }
            if (bool) {
              break;
            }
            if (a(locald.a(locale))) {
              paramn.a(locald, paramDouble);
            }
            locald = locald.i();
          } while (!bool);
          if (i != 0) {
            break;
          }
          locald = locale.i();
          do
          {
            if (locald == null) {
              break label156;
            }
            if (bool) {
              break;
            }
            if (a(locald.a(locale))) {
              paramn.a(locald, paramDouble);
            }
            locald = locald.j();
          } while (!bool);
        }
        localw.f();
      } while (i != 0);
    } while (!bool);
    label156:
  }
  
  private static class a_
  {
    private final e a;
    private double b;
    private double d;
    private int f;
    private final ab g;
    
    a_(e parame)
    {
      this.a = parame;
      this.b = 0.0D;
      this.d = 0.0D;
      this.f = -2147483648;
      this.g = new ab();
    }
    
    e a()
    {
      return this.a;
    }
  }
}



/* Location:           E:\idea\

 * Qualified Name:     a.a.a

 * JD-Core Version:    0.7.0.1

 */